/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-01-07
 * Time: 22:04
 */

public class Solution {
//     思路:
//     ...<nums[left-2]<nums[left-1]< min <nums[left]
//     nums[right]< max <nums[right+1]<nums[right+2]<...
//     所以找left, 从右往左找, 就是找最后一个大于 min 的
//     找 right , 从左往右找, 就是找最后一个小于 max 的
//     注意因为最后结果 +1 了, 但若数组本身有序, left, right都是初始值
//     应该返回 0 , 所以right 比left少1
    public int findUnsortedSubarray(int[] nums) {
        int len=nums.length;
        int left=0;
        int right=-1;
        int max=nums[0];
        int min=nums[len-1];
        for(int i=0;i<len;i++){
            if(nums[i]<max){
                right=i;
            }else{
                max=nums[i];
            }
            if(nums[len-i-1]>min){
                left=len-i-1;
            }else{
                min=nums[len-i-1];
            }
        }
        return right-left+1;
    }
}